//
//  File.swift
//  Line
//
//  Created by admin on 2022/4/25.
//

import SwiftUI
import AVFoundation
//预先创建一个播放器
var soundPlayer: AVAudioPlayer?

func playAudio(forResource: String, ofType: String) {

    //定义路径
    let path = Bundle.main.path(forResource: forResource, ofType: ofType)!
    //定义url
    let url = URL(fileURLWithPath: path)

    do {
        //尝试使用预设的声音播放器获取目标文件
        soundPlayer = try AVAudioPlayer(contentsOf: url)

        //播放声音————停止的话使用stop()方法
        soundPlayer?.play()
    } catch {
        //加载文件失败，这里用于防止应用程序崩溃
        print("音频文件出现问题")
    }
}


func playAudio2(forResource: String, ofType: String) {

    //定义路径
    let path = Bundle.main.path(forResource: forResource, ofType: ofType)!
    //定义url
    let url = URL(fileURLWithPath: path)

    do {
        //尝试使用预设的声音播放器获取目标文件
        soundPlayer = try AVAudioPlayer(contentsOf: url)

        //播放声音————停止的话使用stop()方法
        soundPlayer?.stop()
    } catch {
        //加载文件失败，这里用于防止应用程序崩溃
        print("音频文件出现问题")
    }
}

func alwaysPlayAudio(forResource: String, ofType: String) {

    //定义路径
    let path = Bundle.main.path(forResource: forResource, ofType: ofType)!
    //定义url
    let url = URL(fileURLWithPath: path)

    do {
        //尝试使用预设的声音播放器获取目标文件
        soundPlayer = try AVAudioPlayer(contentsOf: url)
        //音乐越循环
        soundPlayer?.numberOfLoops = -1
        //播放声音————停止的话使用stop()方法
        soundPlayer?.play()
    } catch {
        //加载文件失败，这里用于防止应用程序崩溃
        print("音频文件出现问题")
    }
}

//struct AudioPlayer: View {
//    var body: some View {
//        Button(action: {
//            alwaysPlayAudio(forResource: "dropSoundEffect", ofType: "mp3")
//        }, label: {
//            Text("播放")
//        })
//    }

//        alwaysPlayAudio(forResource: "", ofType: "mp3")
//

//
//}
//struct AudioPlayer_Previews: PreviewProvider {
//    static var previews: some View {
//        AudioPlayer()
//    }
//}
////

//import AVFoundation
//
//var audioPlayer: AVAudioPlayer?
//
//func playSound(sound: String, type: String) {
//
//    if let path = Bundle.main.path(forResource: sound, ofType: type) {
//        do {
//            audioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))
//            audioPlayer?.play()
//        } catch {
//            print("Erro: not found the file")
//        }
//    }
//
//}
//
//public enum Music: String {
//    case music3 = "music1"
//    case music1 = "Background sound"
//    case music2 = "Sound of sawing wood"
//
//}
//
//public class MusicManager {
//    var audioPlayer: AVAudioPlayer!
//
//    init() {
//        audioPlayer = AVAudioPlayer()
//    }
//    func play(music: Music) {
//        //获得音频会话对象,该对象属于单例模式,也就是说不用开发者而自行实例化.这个类在各种音频环境中,起着重要作用
//        let session = AVAudioSession.sharedInstance()
//        //在音频播放前,首先创建一个异常捕捉语句
//        do {
//            //启动音频会话管理,此时会阻断后台音乐的播放.
//            try session.setActive(true)
//            //设置音频操作类别,表示该应用仅支持音频的播放.
//            try session.setCategory(AVAudioSession.Category.playback)
//            //设置应用程序支持接受远程控制事件，playgroundbook不支持远程这个功能
//            //            UIApplication.shared.beginReceivingRemoteControlEvents()
//            //定义字符串变量,描述声音文件路径
//            let path = Bundle.main.path(forResource: music.rawValue, ofType: "mp3")
//            //将字符串路径,转换为网址路径
//            let soundUrl = NSURL(fileURLWithPath: path!)
//            //对音频播放对象,进行初始化,并加载制定的音频文件
//            try audioPlayer = AVAudioPlayer(contentsOf: soundUrl as URL)
//            //为音频播放做好准备
//            audioPlayer.prepareToPlay()
//            //设置音频播放对象播放音量的大小
//            audioPlayer.volume = 1.0
//            //播放次数
//            audioPlayer.numberOfLoops = -1 //-1:无限循环播放
//            audioPlayer.play()
//
//        } catch {
//            print(error)
//        }
//
//    }
//}
//
//
